<?php
namespace app\admin\controller\queue;

use app\admin\service\NuoService;
use app\common\model\tang\Invoice;
use app\common\model\tang\SendConfigLog;
use think\facade\Db;
use think\facade\Queue;
use think\queue\Job;
use app\api\service\message;
class AutoMessage
{
    /**
     * fire方法是消息队列默认调用的方法
     * @param Job $job 当前的任务对象
     * @param array $data 发布任务时自定义的数据
     */
    public function fire(Job $job, array $data)
    {
        // 有些任务在到达消费者时，可能已经不再需要执行了
        $isJobStillNeedToBeDone = $this->checkDatabaseToSeeIfJobNeedToBeDone($data);
        if (!$isJobStillNeedToBeDone) {
            $job->delete();
            return;
        }

        $isJobDone = $this->doHelloJob($data);
        if ($isJobDone) {
            $job->delete();
            echo "删除任务" . $job->attempts() . '\n';
        } else {
            if ($job->attempts() > 3) {
                $job->delete();
                echo "超时任务删除" . $job->attempts() . '\n';
            }
        }

    }

    /**
     * 有些消息在到达消费者时,可能已经不再需要执行了，具体业务逻辑自己处理
     * @param array $data
     * @return bool
     */
    private function checkDatabaseToSeeIfJobNeedToBeDone(array $data)
    {
        return true;
    }

    /**
     * 根据消息中的数据进行实际的业务处理...
     * @param array $data
     * @return bool
     */
    private function doHelloJob(array $datas)
    {

        $res = (new message())->send_msg($datas);
        if($res['errcode']==0){
            $snedConfig['reason'] = $res['errmsg'];
            $snedConfig['is_success'] = 1;
        }else{
            $snedConfig['is_success'] = 2;
            $snedConfig['reason'] = $res['errmsg'];
        }
        (new SendConfigLog())->update($snedConfig,['id'=>$datas['logId']]);
        return true;
    }
}